In this notebook, we are using the tmb_genomic.tsv file
generated from the 01-preprocess-data.Rmd script.
suppressPackageStartupMessages({
library(tidyverse)
})
# Detect the ".git" folder. This will be in the project root directory.
# Use this as the root directory to ensure proper sourcing of functions
# no matter where this is called from.
root_dir <- rprojroot::find_root(rprojroot::has_dir(".git"))
scratch_dir <- file.path(root_dir, "scratch")
analysis_dir <- file.path(root_dir, "analyses", "tmb-vaf-longitudinal")
input_dir <- file.path(analysis_dir, "input")
# Input files
tmb_genomic_file <- file.path(scratch_dir, "tmb_genomic.tsv")
palette_file <- file.path(root_dir, "figures", "palettes", "tumor_descriptor_color_palette.tsv")
# File path to plots directory
plots_dir <-
file.path(analysis_dir, "plots")
if (!dir.exists(plots_dir)) {
dir.create(plots_dir)
}
source(paste0(analysis_dir, "/util/function-create-barplot.R"))
source(paste0(analysis_dir, "/util/function-create-dumbbell-plot.R"))
source(paste0(analysis_dir, "/util/function-create-jitter-plot.R"))
source(paste0(root_dir, "/figures/scripts/theme.R"))
# Read and process tmb_genomic file
df_total <- readr::read_tsv(tmb_genomic_file, guess_max = 100000, show_col_types = FALSE)
# Are there any samples with both WGS and WXS?
df_total %>%
unique() %>%
arrange(Kids_First_Participant_ID, experimental_strategy) %>%
group_by(Kids_First_Participant_ID) %>%
dplyr::summarise(experimental_strategy_sum = str_c(experimental_strategy, collapse = ";"))
# There are, so let's remove these from downstream analyses.
df <- df_total %>%
filter(!experimental_strategy == "WXS") %>%
dplyr::mutate(patient_id = paste(short_histology, Kids_First_Participant_ID, sep = "_")) %>%
select(Kids_First_Participant_ID, Kids_First_Biospecimen_ID, patient_id, short_histology, tumor_descriptor, descriptors, tumor_descriptor_sum, tmb, mutation_count)
# Read color palette
palette_df <- readr::read_tsv(palette_file, guess_max = 100000, show_col_types = FALSE)
We will explore TMB per Kids_First_Participant_ID over
time by creating stacked barplots.
# Define parameters for function
ylim = max(df$tmb)
# Re-order df
f <- c("Second Malignancy", "Unavailable", "Deceased", "Recurrence", "Progressive", "Diagnosis") # Level df by timepoints
df_plot <- df %>%
dplyr:::mutate(tumor_descriptor = factor(tumor_descriptor),
tumor_descriptor = fct_relevel(tumor_descriptor, f))
# Run function
fname <- paste0(plots_dir, "/", "TMB-genomic-total.pdf")
print(fname)
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/TMB-genomic-total.pdf"
p <- create_stacked_barplot(tmb_df = df_plot, ylim = ylim)
pdf(file = fname, width = 15, height = 6)
print(p)
dev.off()
quartz_off_screen
2
Attention: Hypermutant TMB defined as ≥10 Mb, and Ultrahypermutant TMB defined as ≥100 mutations/Mb in pediatric brain tumors (https://pubmed.ncbi.nlm.nih.gov/29056344/).
Here, we notice that there are samples with high TMB (hyper-mutant samples). Next, we will exclude these samples (threshold >= 10) from downstream analysis. Attention is needed in cases with high number of mutations in only one timepoint as this will lead to un-matched longitudinal samples. We will also remove those so we always have matched longitudinal samples.
# Filter df and remove any samples with single timepoints
df_plot_filter <- df %>%
filter(!tmb >= 10) %>%
unique() %>%
arrange(Kids_First_Participant_ID, tumor_descriptor) %>%
group_by(Kids_First_Participant_ID) %>%
dplyr::summarise(tumor_descriptor_sum = str_c(tumor_descriptor, collapse = ";")) %>%
filter(!tumor_descriptor_sum %in% c("Diagnosis", "Progressive", "Recurrence", "Second Malignancy", "Unavailable", "Deceased")) %>%
dplyr::left_join(df, by = c("Kids_First_Participant_ID", "tumor_descriptor_sum")) %>%
mutate(cancer_group_sum = ifelse(short_histology == "HGAT", "High-grade glioma",
ifelse(short_histology == "LGAT", "Low-grade glioma", "Other cancer group")),
cancer_group_sum = replace_na(cancer_group_sum, "Other"),
tumor_descriptor = factor(tumor_descriptor),
tumor_descriptor = fct_relevel(tumor_descriptor, f)) %>%
drop_na(tmb)
# Define parameters for function
ylim = max(df_plot_filter$tmb)
df_plot_filter <- df_plot_filter
# Run function
fname <- paste0(plots_dir, "/", "TMB-genomic-no-hypermutants.pdf")
print(fname)
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/TMB-genomic-no-hypermutants.pdf"
p <- create_stacked_barplot(tmb_df = df_plot_filter, ylim = ylim)
pdf(file = fname, width = 25, height = 8)
print(p)
dev.off()
quartz_off_screen
2
We will explore TMB per cancer group over time by creating dumbbell plots. We classified by using cancer types with the highest number of samples (High- and Low-grade gliomas) versus any other cancer groups.
cancer_groups <- unique(as.character(df_plot_filter$cancer_group_sum))
cancer_groups <- sort(cancer_groups, decreasing = FALSE)
print(cancer_groups)
[1] "High-grade glioma" "Low-grade glioma" "Other cancer group"
for (i in seq_along(cancer_groups)) {
print(i)
df_ct_sub <- df_plot_filter %>%
filter(cancer_group_sum == cancer_groups [i])
if (i == 1) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 8
} else if (i == 2) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 4
} else {
print(cancer_groups [i])
# Define parameters for function
ylim <- 4
}
# Name plots
fname <- paste0(plots_dir, "/", cancer_groups[i],, "-TMB-dumbbell", ".pdf")
print(fname)
# Run function
p <- create_dumbbell_ct(tmb_df = df_ct_sub,
ylim = ylim,
ct_id = cancer_groups[i])
pdf(file = fname, width = 18, height = 10)
print(p)
dev.off()
}
[1] 1
[1] "High-grade glioma"
Error in paste0(plots_dir, "/", cancer_groups[i], , "-TMB-dumbbell", ".pdf") :
argument is missing, with no default
for (i in seq_along(cancer_groups)) {
print(i)
df_ct_sub <- df_plot_filter %>%
filter(cancer_group_sum == cancer_groups [i])
if (i == 1) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 260
} else if (i == 2) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 150
} else {
print(cancer_groups [i])
# Define parameters for function
ylim <- 150
}
# Name plots
fname <- paste0(plots_dir, "/", "Mutations-genomic-dumbbell", "-", cancer_groups[i], ".pdf")
print(fname)
# Run function
p <- create_dumbbell_ct_mut(tmb_df = df_ct_sub,
ylim = ylim,
ct_id = cancer_groups[i])
pdf(file = fname, width = 18, height = 10)
print(p)
dev.off()
}
[1] 1
[1] "High-grade glioma"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/Mutations-genomic-dumbbell-High-grade glioma.pdf"
[1] 2
[1] "Low-grade glioma"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/Mutations-genomic-dumbbell-Low-grade glioma.pdf"
[1] 3
[1] "Other cancer group"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/Mutations-genomic-dumbbell-Other cancer group.pdf"
Let’s see if the issue with missing values per sample int he dumbbell plots is bypassed when using jitter plot.
cancer_groups <- unique(as.character(df_plot_filter$cancer_group_sum))
cancer_groups <- sort(cancer_groups, decreasing = FALSE)
print(cancer_groups)
[1] "High-grade glioma" "Low-grade glioma" "Other cancer group"
for (i in seq_along(cancer_groups)) {
print(i)
df_ct_sub <- df_plot_filter %>%
filter(cancer_group_sum == cancer_groups [i])
if (i == 1) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 8
} else if (i == 2) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 4
} else {
print(cancer_groups [i])
# Define parameters for function
ylim <- 4
}
# Name plots
fname <- paste0(plots_dir, "/", "TMB-genomic-jitter", "-", cancer_groups[i], ".pdf")
print(fname)
# Run function
p <- create_jitter_ct(tmb_df = df_ct_sub,
ylim = ylim,
ct_id = cancer_groups[i])
pdf(file = fname, width = 18, height = 10)
print(p)
dev.off()
}
[1] 1
[1] "High-grade glioma"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/TMB-genomic-jitter-High-grade glioma.pdf"
[1] 2
[1] "Low-grade glioma"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/TMB-genomic-jitter-Low-grade glioma.pdf"
[1] 3
[1] "Other cancer group"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/TMB-genomic-jitter-Other cancer group.pdf"
It is not… i have tried with side-by-side barplots and it was the same issue. Dumbbell plots might be more informative to show changes across timepoints. We could consider to use them in later analyses.
Here, we want to explore the number of mutations per timepoint and biospecimen sample per patient case.
samples <- unique(as.character(df_plot_filter$Kids_First_Participant_ID))
print(samples)
[1] "PT_02J5CWN5" "PT_0DWRY9ZX" "PT_1ZAWNGWT" "PT_2FVTD0WR" "PT_2MZPGZN1" "PT_2YT37G8P" "PT_37B5JRP1" "PT_39H4JN6H"
[9] "PT_3A2Q62RD" "PT_3GYW6P6P" "PT_3P3HARZ2" "PT_3R0P995B" "PT_3T3VGWC6" "PT_3VCS1PPF" "PT_5NS35B66" "PT_5ZPPR06P"
[17] "PT_62G82T6Q" "PT_82MX6J77" "PT_89XRZBSG" "PT_962TCBVR" "PT_98QMQZY7" "PT_99S5BPE3" "PT_B5DQ8FF0" "PT_BRVGRXQY"
[25] "PT_BZCJMEX8" "PT_CWXSP19D" "PT_CXT81GRM" "PT_DFQAH7RS" "PT_DNAJYFZT" "PT_DVXE38EX" "PT_FN4GEEFR" "PT_HE8FBFNA"
[33] "PT_HHG37M6W" "PT_JNEV57VK" "PT_JSFBMK5V" "PT_KMHGNCNR" "PT_P571HTNK" "PT_PF04R0BH" "PT_PR4YBBH3" "PT_QH9H491G"
[41] "PT_S2SQJVGK" "PT_T4VN7ZRB" "PT_TKWTTRQ7" "PT_TP6GS00H" "PT_TRZ1N1HQ" "PT_VTG1S395" "PT_XA98HG1C" "PT_XHYBZKCX"
[49] "PT_YK7AD0KK" "PT_Z4GS3ZQQ" "PT_ZMKMKCFQ"
for (i in seq_along(samples)) {
print(i)
tmb_sub <- df_plot_filter %>%
filter(Kids_First_Participant_ID == samples[i])
# Define parameters for function
ylim = max(df_plot_filter$mutation_count)
# Run function
fname <- paste0(plots_dir, "/", samples[i], "-Mutations-barplot.pdf")
print(fname)
p <- create_barplot_sample(tmb_df = tmb_sub,
ylim = ylim,
sid = samples[i])
pdf(file = fname, width = 5, height = 4)
print(p)
dev.off()
}
[1] 1
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_02J5CWN5-Mutations-barplot.pdf"
[1] 2
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_0DWRY9ZX-Mutations-barplot.pdf"
[1] 3
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_1ZAWNGWT-Mutations-barplot.pdf"
[1] 4
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_2FVTD0WR-Mutations-barplot.pdf"
[1] 5
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_2MZPGZN1-Mutations-barplot.pdf"
[1] 6
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_2YT37G8P-Mutations-barplot.pdf"
[1] 7
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_37B5JRP1-Mutations-barplot.pdf"
[1] 8
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_39H4JN6H-Mutations-barplot.pdf"
[1] 9
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_3A2Q62RD-Mutations-barplot.pdf"
[1] 10
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_3GYW6P6P-Mutations-barplot.pdf"
[1] 11
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_3P3HARZ2-Mutations-barplot.pdf"
[1] 12
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_3R0P995B-Mutations-barplot.pdf"
[1] 13
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_3T3VGWC6-Mutations-barplot.pdf"
[1] 14
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_3VCS1PPF-Mutations-barplot.pdf"
[1] 15
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_5NS35B66-Mutations-barplot.pdf"
[1] 16
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_5ZPPR06P-Mutations-barplot.pdf"
[1] 17
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_62G82T6Q-Mutations-barplot.pdf"
[1] 18
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_82MX6J77-Mutations-barplot.pdf"
[1] 19
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_89XRZBSG-Mutations-barplot.pdf"
[1] 20
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_962TCBVR-Mutations-barplot.pdf"
[1] 21
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_98QMQZY7-Mutations-barplot.pdf"
[1] 22
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_99S5BPE3-Mutations-barplot.pdf"
[1] 23
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_B5DQ8FF0-Mutations-barplot.pdf"
[1] 24
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_BRVGRXQY-Mutations-barplot.pdf"
[1] 25
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_BZCJMEX8-Mutations-barplot.pdf"
[1] 26
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_CWXSP19D-Mutations-barplot.pdf"
[1] 27
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_CXT81GRM-Mutations-barplot.pdf"
[1] 28
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_DFQAH7RS-Mutations-barplot.pdf"
[1] 29
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_DNAJYFZT-Mutations-barplot.pdf"
[1] 30
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_DVXE38EX-Mutations-barplot.pdf"
[1] 31
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_FN4GEEFR-Mutations-barplot.pdf"
[1] 32
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_HE8FBFNA-Mutations-barplot.pdf"
[1] 33
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_HHG37M6W-Mutations-barplot.pdf"
[1] 34
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_JNEV57VK-Mutations-barplot.pdf"
[1] 35
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_JSFBMK5V-Mutations-barplot.pdf"
[1] 36
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_KMHGNCNR-Mutations-barplot.pdf"
[1] 37
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_P571HTNK-Mutations-barplot.pdf"
[1] 38
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_PF04R0BH-Mutations-barplot.pdf"
[1] 39
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_PR4YBBH3-Mutations-barplot.pdf"
[1] 40
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_QH9H491G-Mutations-barplot.pdf"
[1] 41
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_S2SQJVGK-Mutations-barplot.pdf"
[1] 42
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_T4VN7ZRB-Mutations-barplot.pdf"
[1] 43
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_TKWTTRQ7-Mutations-barplot.pdf"
[1] 44
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_TP6GS00H-Mutations-barplot.pdf"
[1] 45
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_TRZ1N1HQ-Mutations-barplot.pdf"
[1] 46
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_VTG1S395-Mutations-barplot.pdf"
[1] 47
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_XA98HG1C-Mutations-barplot.pdf"
[1] 48
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_XHYBZKCX-Mutations-barplot.pdf"
[1] 49
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_YK7AD0KK-Mutations-barplot.pdf"
[1] 50
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_Z4GS3ZQQ-Mutations-barplot.pdf"
[1] 51
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/PT_ZMKMKCFQ-Mutations-barplot.pdf"
Let’s try to do the same by using facet_wrap function.
Again, we are missing values in timepoints. Maybe we can divide by
names(samples), adjust ylim per each and create 3-4 panels for each
ylim.
for (i in seq_along(cancer_groups)) {
print(i)
df_ct_sub <- df_plot_filter %>%
filter(cancer_group_sum == cancer_groups [i])
if (i == 1) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 260
} else if (i == 2) {
print(cancer_groups [i])
# Define parameters for function
ylim <- 150
} else {
print(cancer_groups [i])
# Define parameters for function
ylim <- 150
}
# Name plots
fname <- paste0(plots_dir, "/", cancer_groups[i], "-Mutations-barplot", ".pdf")
print(fname)
# Run function
p <- create_barplot_sample_panel(tmb_df = df_ct_sub,
ylim = ylim,
ct_id = cancer_groups[i])
pdf(file = fname, width = 25, height = 20)
print(p)
dev.off()
}
[1] 1
[1] "High-grade glioma"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/High-grade glioma-Mutations-barplot.pdf"
[1] 2
[1] "Low-grade glioma"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/Low-grade glioma-Mutations-barplot.pdf"
[1] 3
[1] "Other cancer group"
[1] "/Users/chronia/CHOP/GitHub/pbta-tumor-evolution/analyses/tmb-vaf-longitudinal/plots/Other cancer group-Mutations-barplot.pdf"
sessionInfo()
R version 4.2.3 (2023-03-15)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.5
Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggthemes_4.2.4 lubridate_1.9.2 forcats_1.0.0 stringr_1.5.0 dplyr_1.1.2 purrr_1.0.1 readr_2.1.4
[8] tidyr_1.3.0 tibble_3.2.1 ggplot2_3.4.2 tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] bslib_0.5.0 jquerylib_0.1.4 pillar_1.9.0 compiler_4.2.3 tools_4.2.3 bit_4.0.5
[7] digest_0.6.33 jsonlite_1.8.7 timechange_0.2.0 evaluate_0.21 lifecycle_1.0.3 gtable_0.3.3
[13] pkgconfig_2.0.3 rlang_1.1.1 cli_3.6.1 rstudioapi_0.15.0 parallel_4.2.3 yaml_2.3.7
[19] xfun_0.39 fastmap_1.1.1 withr_2.5.0 knitr_1.43 sass_0.4.7 generics_0.1.3
[25] vctrs_0.6.3 hms_1.1.3 bit64_4.0.5 rprojroot_2.0.3 tidyselect_1.2.0 glue_1.6.2
[31] R6_2.5.1 fansi_1.0.4 vroom_1.6.3 rmarkdown_2.23 farver_2.1.1 tzdb_0.4.0
[37] magrittr_2.0.3 scales_1.2.1 htmltools_0.5.5 colorspace_2.1-0 labeling_0.4.2 utf8_1.2.3
[43] stringi_1.7.12 munsell_0.5.0 cachem_1.0.8 crayon_1.5.2